<template>
      <!--输入框-->
      <div style="width: 600px;align-items: center;margin-left: -100%;">
        <el-form
          ref="ruleFormRef"
          :model="ruleForm"
          status-icon
          :rules="rules"
          label-position="top"
          label-width="120px"
          style="width: 300px;padding-left: 50%;padding-top: 50;"
        >
        <!-- 输入学号 -->
          <el-form-item label="学号：" prop="id">
            <el-input v-model.number="ruleForm.id" type="text" autocomplete="off" />
          </el-form-item>
          <!-- 输入名字 -->
          <el-form-item label="姓名：" prop="name">
            <el-input v-model="ruleForm.name" type="test" autocomplete="off"/>
          </el-form-item>
          <!-- 输入身份证号 -->
          <el-form-item label="身份证号：" prop="identity">
            <el-input v-model="ruleForm.identity" />
          </el-form-item>
          <!-- 提交表单 -->
          <el-form-item>
            <el-button type="primary" @click="submitForm(ruleForm)">激活</el-button>
            <el-button style="margin-left:35%"  @click="pre">返回</el-button>
            <el-button style="margin-left: 80%;margin-top: -11%;" @click="resetForm">重置</el-button>
            <Vcode :show="isShow" @success="success" @close="close" @fail="fail" :img="[Img]"></Vcode>
          </el-form-item>
        </el-form>
      </div>
  
</template>

<script  >
import { reactive, ref } from 'vue'
import { register } from "@/api/index/register"
import Vcode from 'vue3-puzzle-vcode'


import _ from 'lodash'


//获取路由器
const ruleFormRef = ref(null);

export default {
  name: 'Register_check',
  components: { Vcode },
  data() {
    // 三个输入
    const validateid = (rule, value, callback) => {
      if (value === '') {
        callback(new Error('请输入学号'));
      } else {
        const reg = /^\d{6,12}$/; // 使用正则表达式匹配6到10位数字
        if (!reg.test(value)) {
          callback(new Error('学号必须为数字，且不小于6位不大于12位'));
        } else {
          callback();
        }
      }
    };
    // 名字验证流程
    const validatename = (rule, value, callback) => {
      if (value === '') {
        callback(new Error('请输入姓名'));
      } else {
        const chineseReg = /[\u4e00-\u9fa5]/; // 匹配中文字符的正则表达式
        const englishReg = /[a-zA-Z]/; // 匹配英文字符的正则表达式
        const length = value.length; // 姓名长度

        if ((chineseReg.test(value) && length < 2) || (englishReg.test(value) && length < 4)) {
          callback(new Error('姓名必须大于等于两个汉字或四个英文字母'));
        } else if (length > 50) {
          callback(new Error('姓名长度不能超过50个字符'));
        } else {
          callback();
        }
      }
    };
        // 身份证验证
    const validateidentity = (rule, value, callback) => {
      if (value === '') {
        callback(new Error('请输入身份证号码'));
      } else {
        const reg = /(^\d{15}$)|(^\d{17}([0-9]|X)$)/; // 基本格式校验
        if (!reg.test(value)) {
          callback(new Error('身份证号格式不正确'));
        } else {
          // 进一步验证身份证号的其他规则，比如地区码、出生日期等

          callback();
        }
      }
    };


    const rules = reactive({
      id: [{ required:true,validator: validateid ,trigger: 'blur' }],
      name: [{ required: true,validator: validatename, trigger: 'blur' }],
      identity: [{ required: true,validator: validateidentity, trigger: 'blur' }],
    })



    return {
      ruleForm: {
        id: '',
        name: '',
        identity: ''
      },
      rules,
      ruleFormRef,
      isShow : false,
     
    };
  },


  methods: {
    pre(){
      var path = this.$route.query.redirect
      this.$router.replace({path: path === '/login' || path === undefined ? '/login' : path})
    },
    // 重置表单
    resetForm() {
    this.$refs.ruleFormRef.resetFields();
  },
  // 提交表单
  submitForm:_.debounce(function(){
    this.$refs.ruleFormRef.validate((valid) => {
      if (valid) {
        // 表单验证通过，可以在这里执行提交操作，比如发送表单数据到后端
        this.Show()
        console.log('表单验证通过，提交的数据为：', this.ruleForm);
        // 在这里可以编写发送表单数据的代码
      } else {
        // 表单验证不通过，可以进行错误处理或者给出提示
        console.log('表单验证未通过，请检查输入');
      }
    });

  },500),
  // 登录请求
  activation() {
    register({
      id: this.ruleForm.id,
      username: this.ruleForm.name,
      identity: this.ruleForm.identity,
    }).then((resp) =>{
      let code=resp.data.code;
      if(code===200){
        console.log('注册成功');
        // var path = this.$route.query.redirect
        // this.$router.replace({path: path === '/register3' || path === undefined ? '/register3' : path})
        this.$emit('nextPage')
        } 
        else if(code===201) {
          alert('该用户已激活');
          
        }
        else{
          alert('不存在该用户或者用户名和身份证号不匹配');
        }
    });
  },
  // 验证码逻辑
  Show(){
    console.log('开始验证')
    this.isShow = true
    
  },
  success (msg){
    this.isShow= false
    console.log('验证通过' + msg)
    //通过验证向后端传送数据
    this.activation()
  },
  //用户点击遮罩层，关闭模态框
   close(){
    this.isShow = false
  },
  //用户验证失败
   fail(){
    console.log('验证失败')
  }

  }
}
</script>


<style scoped>

</style>
